package com.donquijote.spring6;

import org.springframework.util.ClassUtils;

import java.net.URI;
import java.net.URL;
import java.time.temporal.Temporal;
import java.util.Date;
import java.util.Locale;

/**
 * @author 421527548@qq.com
 * @version V1.0
 * @title
 * @description
 * @date 2022-11-04 11:44
 */
public class IsSimpleValueType {
    public static boolean isSimpleValueType(Class<?> type) {
        return Void.class != type && Void.TYPE != type &&
                (ClassUtils.isPrimitiveOrWrapper(type) || /** 基本类型或者包装类型 */
                        Enum.class.isAssignableFrom(type) || /**枚举*/
                        CharSequence.class.isAssignableFrom(type) || /**String类型（String类型实现了CharSequence类）*/
                        Number.class.isAssignableFrom(type) ||/**数据包装类型 （Integer继承了Number类型）*/
                        Date.class.isAssignableFrom(type) || /**时间类型*/
                        Temporal.class.isAssignableFrom(type) || /**java8之后提供的新特性，关于时间和时区的类型*/
                        URI.class == type ||
                        URL.class == type ||
                        Locale.class == type || /**语言*/
                        Class.class == type);
    }
}
